function obj = Traditional_regularization_method(obj,ini_pos,ini_vel)
MAXITR = 60;%最小二乘迭代次数
doppler_obs_array = {obj.doppler_obs.doppler}';
visible_sat = {obj.sat_obs.satobs}';
% ini_pos = obj.pos+[100000,100000,100000];%位置

ini_tu = 0;
env = enviroment;
obs_n = length(doppler_obs_array);
disp("开始最小二乘多普勒定位解算");
for i = 1:obs_n
    n = length(cell2mat(visible_sat(i)));
    if n<7
        disp([num2str(i),'历元观测卫星数不足']);
        continue
    end
    %以下开始最小二乘迭代 for
    for j = 1:MAXITR
        ini_pos_temp = repmat(ini_pos,n,1);
        ini_vel_temp = repmat(ini_vel,n,1);
        satpos = obj.satpos_obs(i).satpos(:,1:3);
        satvel = obj.satpos_obs(i).satpos(:,4:6);
        V = (satvel-ini_vel_temp);
        P = (satpos-ini_pos_temp);
        R = vecnorm((satpos-ini_pos_temp)')';
        E_array = (satpos-ini_pos_temp)./R;
        dp_dpos = P./R.*(sum(P.*V,2)./(R.^2))-V./R;  %多普勒对三个方向线性化方程
        dp_dtu = ones(n,1);
        dp_dvx = -E_array(:,1);
        dp_dvy = -E_array(:,2);
        dp_dvz = -E_array(:,3);
        G = [dp_dpos,dp_dvx,dp_dvy,dp_dvz,dp_dtu]./(env.c/obj.f_obs);
        W = eye(n);
        C = W'*W;
        G_array = G'*G;
        % disp(1/rcond(G_array));
        DDop = inv(G_array);
        L = -cell2mat(doppler_obs_array(i))-sum(V.*(P./R),2)*obj.f_obs/env.c-ini_tu;
        delta_state = (G'*C*G+0.00078*eye(7))^-1*G'*C*L;
        if (norm(delta_state(1:3))<1e-1)                             %单点为无速度时的解算
            PosState = 1;
            % fprintf('定位成功\n');
            break;
        elseif (j == MAXITR)
            fprintf('该历元定位失败\n');
            PosState = 0;
        end
        ini_pos = ini_pos+delta_state(1:3)';%位置、速度、钟漂应该是初始值加修正的形式
        ini_vel = ini_vel+delta_state(4:6)';
        ini_tu = ini_tu+delta_state(7);
    end
    obj.DDOP(i).DDOP = DDop;
    obj.DDOP(i).DGDOP = sqrt(trace(DDop));
    obj.DDOP(i).DPDOP = sqrt(trace(DDop(1:3,1:3)));
    obj.Traditional_position_result(i).result = [ini_pos,ini_vel,ini_tu/obj.f_obs];
    obj.Traditional_position_result(i).state = PosState;
end
disp("多普勒定位解算结束");
end